對於軟體工程師而言,工作日常就是接受需求與提出解決方案。面對新需求時,除了要思考如何解決問題,還要在不同的解決方案之間做出抉擇。不同的情境有不同的考量,如何從眾多的解決方案中找出合適的設計方式,就成了開發者的一道重要課題。
本系列文章以四人幫 (GoF) 提出的設計模式為主軸,介紹常見的軟體設計手法與它們所解決的問題。每篇文章都會從生活化的例子出發,說明模式的基本觀念,再從實務面的角度提出可能的應用場景,讓讀者有更具體的認識。
本系列文章使用 TypeScript 撰寫範例程式,這些範例旨在幫助讀者理解設計模式的運作原理,而非提供一套完整或可直接應用的程式。此外,範例程式會盡量排除語言特有的語法與功能,專注於傳統的設計手法,以便從根本認識這些模式的核心思想。
這三十天的主題如下:
Day 01 - 前言
Day 02 - 何謂設計模式
Day 03 - UML Class Diagram 類別圖
Day 04 - 堅若磐石 SOLID
Day 05 - Factory Method 工廠方法
Day 06 - Strategy 策略
Day 07 - Observer 觀察者
Day 08 - Decorator 裝飾者
Day 09 - Abstract Factory 抽象工廠
Day 10 - Singleton 單例
Day 11 - Command 命令
Day 12 - Facade 表象
Day 13 - Adapter 轉接器
Day 14 - Prototype 原型
Day 15 - Builder 建造者
Day 16 - Chain of Responsibility 責任鏈
Day 17 - Template Method 樣板方法
Day 18 - Iterator 反覆器
Day 19 - Composite 合成
Day 20 - Null Object 空物件
Day 21 - Proxy 代理
Day 22 - Mediator 中介者
Day 23 - Flyweight 享元
Day 24 - Bridge 橋接
Day 25 - State 狀態
Day 26 - Memento 備忘錄
Day 27 - Method Chaining 方法鏈
Day 28 - Interpreter 解釋器
Day 29 - Visitor 訪問者
Day 30 - 結語
歡迎有興趣的朋友一起分享交流!
※ 為了控制文章的篇幅,文中只包含部分的範例程式,完整的範例可前往 GitHub 查看。